/**
 * 
 */
package fr.fermeManager.application.controllers;

import java.util.List;

import org.jdesktop.observablecollections.ObservableCollections;

import fr.fermeManager.application.utils.AppContext;
import fr.fermeManager.application.utils.Constantes;
import fr.fermeManager.application.views.ViewGestionTransactions;
import fr.fermeManager.library.model.beans.Ferme;
import fr.fermeManager.library.model.beans.Transaction;
import fr.fermeManager.library.model.beans.TypeTransaction;
import fr.fermeManager.library.services.FermeService;
import fr.fermeManager.library.services.FermeServiceImpl;
import fr.fermeManager.library.services.TransactionService;
import fr.fermeManager.library.services.TransactionServiceImpl;
import fr.fermeManager.library.services.TypeTransactionService;
import fr.fermeManager.library.services.TypeTransactionServiceImpl;


/**
 * @author Mo
 * 
 */
public class ControllerGestionTransactions extends BaseController{
	
	FermeService serviceFerme = new FermeServiceImpl();
	
	TransactionService serviceTrasaction = new TransactionServiceImpl();
	
	TypeTransactionService serviceTypeTransaction = new TypeTransactionServiceImpl();

	public ControllerGestionTransactions() {
		
		// Affectation de la nouvelle vue
		AppContext.setBasePanel(new ViewGestionTransactions(this),true);
	}

	@Override
	public void loadData() {
		
		Ferme currentFerme = (Ferme) AppContext.getSession().get(Constantes.CURRENT_FERME);
		
		List<Transaction> listeTransactions = serviceTrasaction.getListeTransactions(currentFerme.getId());
		
		List<TypeTransaction> listeTypes = serviceTypeTransaction.getListeTypesTransactions(currentFerme.getId());
		
		for (Transaction transaction : listeTransactions) {
			for (TypeTransaction typeTransaction : listeTypes) {
				if(transaction.getTypeTransaction().getId() == typeTransaction.getId()){
					transaction.setTypeTransaction(typeTransaction);
					break;
				}
			}
		}
		
		currentFerme.setTransactions(ObservableCollections.observableList(listeTransactions));
		
		currentFerme.setTypesTransactions(ObservableCollections.observableList(listeTypes));
		
		((ViewGestionTransactions)AppContext.getBasePanel()).setCurrentFerme(currentFerme);
	}

	public void supprimerTransaction(Transaction transacParam) {
		
		Ferme currentFerme = (Ferme) AppContext.getSession().get(Constantes.CURRENT_FERME);
		
		currentFerme.supprimerTransaction(transacParam);
		
		serviceTrasaction.supprimerTransaction(transacParam.getId());
	}

	public void ajouterTransaction(Transaction nouveauTransac) {
		
		Ferme currentFerme = (Ferme) AppContext.getSession().get(Constantes.CURRENT_FERME);
		
		nouveauTransac = serviceTrasaction.ajouterTransaction(currentFerme.getId(),nouveauTransac);	
		
		currentFerme.ajouterTransaction(nouveauTransac);
	}

	public void modifierTransaction(Transaction currentTransaction) {
		
		Ferme currentFerme = (Ferme) AppContext.getSession().get(Constantes.CURRENT_FERME);
		
		currentFerme.modifierTransaction(currentTransaction);
		
		serviceTrasaction.modifierTransaction(currentTransaction);	
		
	}
}
